﻿#pragma once

#include "Enums.h"
#include "Data/Stat.h"
#include <vector>
#include <limits>

//C# TO C++ CONVERTER NOTE: Forward class declarations:
class BaseStat;

class BaseStats
{
public:
    MirClass Job = static_cast<MirClass>(0);
    std::vector<BaseStat*> Stats = std::vector<BaseStat*>();

    Stats *Caps = new Stats();

    virtual ~BaseStats()
    {
        delete Caps;
    }

    BaseStats(MirClass job);

    BaseStats(BinaryReader *reader);

    void Save(BinaryWriter *writer);
};

class BaseStat
{
public:
    StatFormula FormulaType = static_cast<StatFormula>(0);
    Stat Type = static_cast<Stat>(0);
    int Base = 0;
    float Gain = 0;
    float GainRate = 0;
    int Max = 0;

    BaseStat(Stat type);

    int Calculate(MirClass job, int level);
};
